package arm_search_3.data;

import java.util.HashMap;

/**
 * term collection adalah koleksi hasil ekstraksi dari term
 *
 * @author Muqtafi Akhmad
 */
public interface TermCollection {

    /**
     * menggabungkan semua file runs yang telah dituliskan ke dalam koleksi file
     * of terms
     */
    public void mergeAllRuns();

    /**
     * menuliskan term collection ke dalam sebuah file runs dalam term directory
     */
    public void writeToRuns();

    /**
     * move term from collection to file under the term directory
     *
     * @param term the term
     */
    public void moveToFile(Term term);

    /**
     * move all terms from the term collection memory to term directory
     */
    public void moveAllToFile();

    /**
     * move all terms from the term directory to the term collection memory
     */
    public void moveAllToMemory();

    /**
     * move term from file to term collection memory
     *
     * @param term the term
     */
    public void readFromFile(Term term);

    /**
     * all terms from memory
     */
    public void purgeMemory();

    /**
     * remove all terms from directory
     */
    public void purgeDirectory();

    /**
     * move all term file in term directory to the new directory
     *
     * @param newDirectory new directory
     */
    public void moveAllTerms(String newDirectory);

    /**
     * return term directory string
     *
     * @return term directory
     */
    public String getTermDirectory();

    /**
     * set the term directory
     *
     * @param directory the new term directory
     */
    public void setTermDirectory(String directory);

    /**
     * menambahkan term ke dalam koleksi
     *
     * @param term term
     */
    public void addTerm(Term term);

    /**
     * mengembalikan apakah term yang dimaksud ada dalam koleksi
     *
     * @param term term yang dicek
     * @return apakah term sudah ada dalam koleksi
     */
    public boolean isExists(Term term);

    /**
     * mendapatkan term dari koleksi yang sesuai dengan string term parameter
     *
     * @param termString term string yang dicocokkan
     * @return apakah term ada dalam koleksi
     */
    public Term getExistingTerm(String termString);

    /**
     * menggabungkan term dengan term yang sudah ada dalam koleksi
     *
     * @param term term yang digabungkan
     */
    public void merge(Term term);

    /**
     * mengembalikan semua term dari dalam dokumen
     *
     * @return koleksi term dalam bentuk hashmap
     */
    public HashMap<String, Term> getAllTerms();

    /**
     * mendapatkan jumlah dokumen yang telah diekstrak untuk mendapatkan term
     *
     * @return jumlah dokumen
     */
    public Integer getDocumentCount();

    /**
     * mengisikan jumlah dokumen yang telah diekstrak
     *
     * @param documentCount jumlah dokumen
     */
    public void setDocumentCount(Integer documentCount);
}